{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.0.0\n",
      "sys.version_info(major=3, minor=7, micro=5, releaselevel='final', serial=0)\n",
      "numpy 1.16.4\n",
      "pandas 0.25.3\n",
      "sklearn 0.22\n",
      "tensorflow 2.0.0\n",
      "tensorflow_core.keras 2.2.4-tf\n",
      "Training Images ->  1339\n",
      "Validation Images ->  10\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd \n",
    "import os\n",
    "import matplotlib.pyplot as plt\n",
    "import sklearn\n",
    "import sys\n",
    "import tensorflow as tf\n",
    "import time\n",
    "import random\n",
    "import pathlib\n",
    "\n",
    "from tensorflow import keras\n",
    "\n",
    "print(tf.__version__)\n",
    "print(sys.version_info)\n",
    "for module in np, pd, sklearn, tf, keras:\n",
    "    print(module.__name__, module.__version__)\n",
    "\n",
    "\n",
    "training_path = pathlib.Path('./training')\n",
    "validation_path = pathlib.Path('./valid')\n",
    "\n",
    "train_image_paths = list(training_path.glob('*/*'))  \n",
    "valid_image_paths = list(validation_path.glob('*/*'))  \n",
    "\n",
    "train_image_paths = [str(path) for path in train_image_paths]\n",
    "valid_image_paths = [str(path) for path in valid_image_paths]\n",
    "\n",
    "random.shuffle(train_image_paths)\n",
    "random.shuffle(valid_image_paths)\n",
    "train_image_count = len(train_image_paths)\n",
    "valid_image_count = len(valid_image_paths)\n",
    "\n",
    "print(\"Training Images -> \", train_image_count)\n",
    "print(\"Validation Images -> \", valid_image_count)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['training\\\\tether\\\\eD71E8422D.png',\n",
       " 'training\\\\eos\\\\32DC6ceff1.png',\n",
       " 'training\\\\xml\\\\FC41B2dbA4 - 副本 (4).png',\n",
       " 'training\\\\litecoin\\\\a22FfEac3d - 副本 (8).png',\n",
       " 'training\\\\xml\\\\4929378bEd - 副本 (10).png']"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_image_paths[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['valid\\\\eos\\\\coinflip_item_eos.png',\n",
       " 'valid\\\\binance\\\\coinflip_item_binance.png',\n",
       " 'valid\\\\tether\\\\coinflip_item_tether.png',\n",
       " 'valid\\\\rlt\\\\coinflip_item_rlt.png',\n",
       " 'valid\\\\litecoin\\\\coinflip_item_litecoin.png']"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "valid_image_paths[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['binance',\n",
       " 'btc',\n",
       " 'eos',\n",
       " 'eth',\n",
       " 'litecoin',\n",
       " 'monero',\n",
       " 'rlt',\n",
       " 'tether',\n",
       " 'xml',\n",
       " 'xrp']"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "label_names = sorted(item.name for item in training_path.glob('*/') if item.is_dir())\n",
    "label_names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "training\\tether\\eD71E8422D.png  --->   tether\n",
      "training\\eos\\32DC6ceff1.png  --->   eos\n",
      "training\\xml\\FC41B2dbA4 - 副本 (4).png  --->   xml\n",
      "training\\litecoin\\a22FfEac3d - 副本 (8).png  --->   litecoin\n",
      "training\\xml\\4929378bEd - 副本 (10).png  --->   xml\n"
     ]
    }
   ],
   "source": [
    "training_image_labels = [pathlib.Path(path).parent.name for path in train_image_paths]\n",
    "for image, label in zip(train_image_paths[:5], training_image_labels[:5]):\n",
    "    print(image, ' --->  ', label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_labels_info = []\n",
    "for image_path, label in zip(train_image_paths, training_image_labels):\n",
    "    train_labels_info.append((image_path, label))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[('training\\\\tether\\\\eD71E8422D.png', 'tether'),\n",
      " ('training\\\\eos\\\\32DC6ceff1.png', 'eos'),\n",
      " ('training\\\\xml\\\\FC41B2dbA4 - 副本 (4).png', 'xml'),\n",
      " ('training\\\\litecoin\\\\a22FfEac3d - 副本 (8).png', 'litecoin'),\n",
      " ('training\\\\xml\\\\4929378bEd - 副本 (10).png', 'xml')]\n"
     ]
    }
   ],
   "source": [
    "import pprint\n",
    "pprint.pprint(train_labels_info[:5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "valid\\eos\\coinflip_item_eos.png  --->   eos\n",
      "valid\\binance\\coinflip_item_binance.png  --->   binance\n",
      "valid\\tether\\coinflip_item_tether.png  --->   tether\n",
      "valid\\rlt\\coinflip_item_rlt.png  --->   rlt\n",
      "valid\\litecoin\\coinflip_item_litecoin.png  --->   litecoin\n"
     ]
    }
   ],
   "source": [
    "valid_image_labels = [pathlib.Path(path).parent.name for path in valid_image_paths]\n",
    "for image, label in zip(valid_image_paths[:5], valid_image_labels[:5]):\n",
    "    print(image, ' --->  ', label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "valid_labels_info = []\n",
    "for image_path, label in zip(valid_image_paths, valid_image_labels):\n",
    "    valid_labels_info.append((image_path, label))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[('valid\\\\eos\\\\coinflip_item_eos.png', 'eos'),\n",
      " ('valid\\\\binance\\\\coinflip_item_binance.png', 'binance'),\n",
      " ('valid\\\\tether\\\\coinflip_item_tether.png', 'tether'),\n",
      " ('valid\\\\rlt\\\\coinflip_item_rlt.png', 'rlt'),\n",
      " ('valid\\\\litecoin\\\\coinflip_item_litecoin.png', 'litecoin')]\n"
     ]
    }
   ],
   "source": [
    "pprint.pprint(valid_labels_info[:5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                    filepath     class\n",
      "0             training\\tether\\eD71E8422D.png    tether\n",
      "1                training\\eos\\32DC6ceff1.png       eos\n",
      "2       training\\xml\\FC41B2dbA4 - 副本 (4).png       xml\n",
      "3  training\\litecoin\\a22FfEac3d - 副本 (8).png  litecoin\n",
      "4      training\\xml\\4929378bEd - 副本 (10).png       xml\n",
      "                                    filepath     class\n",
      "0            valid\\eos\\coinflip_item_eos.png       eos\n",
      "1    valid\\binance\\coinflip_item_binance.png   binance\n",
      "2      valid\\tether\\coinflip_item_tether.png    tether\n",
      "3            valid\\rlt\\coinflip_item_rlt.png       rlt\n",
      "4  valid\\litecoin\\coinflip_item_litecoin.png  litecoin\n"
     ]
    }
   ],
   "source": [
    "train_df = pd.DataFrame(train_labels_info)\n",
    "valid_df = pd.DataFrame(valid_labels_info)\n",
    "\n",
    "train_df.columns = valid_df.columns = ['filepath', 'class']\n",
    "\n",
    "print(train_df.head())\n",
    "print(valid_df.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 1339 validated image filenames belonging to 10 classes.\n",
      "Found 10 validated image filenames belonging to 10 classes.\n"
     ]
    }
   ],
   "source": [
    "height = 139\n",
    "width = 128\n",
    "channels = 3\n",
    "batch_size = 10\n",
    "num_classes = 10\n",
    "\n",
    "train_datagen = keras.preprocessing.image.ImageDataGenerator(\n",
    "    #像素值 都除以255\n",
    "    rescale = 1./255,\n",
    "    # 图片左右位移  20%限度以内\n",
    "    width_shift_range = 0.2,\n",
    "    # 图片上下位移  20%限度以内\n",
    "    height_shift_range = 0.2,\n",
    "    # 图像剪切强度\n",
    "    shear_range = 0.2,\n",
    "    # 图像缩放强度\n",
    "    zoom_range = 0.2,\n",
    "    # 是否水平翻转\n",
    "    horizontal_flip = False,\n",
    "    # 放大缩小吼， 像素填充方式\n",
    "    fill_mode = 'nearest',\n",
    ")\n",
    "\n",
    "train_generator = train_datagen.flow_from_dataframe(train_df, directory = './',\n",
    "                                                    x_col = 'filepath',\n",
    "                                                    y_col = 'class',\n",
    "                                                    classes = label_names,\n",
    "                                                    target_size = (height, width),\n",
    "                                                    batch_size = batch_size,\n",
    "                                                    seed = 2333,\n",
    "                                                    shuffle = True,\n",
    "                                                    class_mode = \"categorical\")\n",
    "\n",
    "valid_datagen = keras.preprocessing.image.ImageDataGenerator(\n",
    "    rescale = 1./255,\n",
    ")\n",
    "valid_generator = valid_datagen.flow_from_dataframe(valid_df, directory = './',\n",
    "                                                    x_col = 'filepath',\n",
    "                                                    y_col = 'class',\n",
    "                                                    classes = label_names,\n",
    "                                                    target_size = (height, width),\n",
    "                                                    batch_size = batch_size,\n",
    "                                                    seed = 666,\n",
    "                                                    shuffle = True,\n",
    "                                                    class_mode = \"categorical\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training Generator Sample ->  1339\n",
      "Validation Generator Sample ->  10\n"
     ]
    }
   ],
   "source": [
    "train_num = train_generator.samples\n",
    "valid_num = valid_generator.samples\n",
    "\n",
    "print(\"Training Generator Sample -> \", train_num)\n",
    "print(\"Validation Generator Sample -> \", valid_num)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(10, 139, 128, 3) (10, 10)\n",
      "[[0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]\n",
      " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]]\n",
      "(10, 139, 128, 3) (10, 10)\n",
      "[[0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]\n",
      " [0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]\n",
      " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n",
      " [0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]\n"
     ]
    }
   ],
   "source": [
    "for i in range(2):\n",
    "    x, y = train_generator.next()\n",
    "    print(x.shape, y.shape)\n",
    "    print(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_1\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "conv2d_6 (Conv2D)            (None, 139, 128, 4)       112       \n",
      "_________________________________________________________________\n",
      "conv2d_7 (Conv2D)            (None, 139, 128, 4)       148       \n",
      "_________________________________________________________________\n",
      "max_pooling2d_3 (MaxPooling2 (None, 69, 64, 4)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_8 (Conv2D)            (None, 69, 64, 8)         296       \n",
      "_________________________________________________________________\n",
      "conv2d_9 (Conv2D)            (None, 69, 64, 8)         584       \n",
      "_________________________________________________________________\n",
      "max_pooling2d_4 (MaxPooling2 (None, 34, 32, 8)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_10 (Conv2D)           (None, 34, 32, 16)        1168      \n",
      "_________________________________________________________________\n",
      "conv2d_11 (Conv2D)           (None, 34, 32, 16)        2320      \n",
      "_________________________________________________________________\n",
      "max_pooling2d_5 (MaxPooling2 (None, 17, 16, 16)        0         \n",
      "_________________________________________________________________\n",
      "flatten_1 (Flatten)          (None, 4352)              0         \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 32)                139296    \n",
      "_________________________________________________________________\n",
      "alpha_dropout_1 (AlphaDropou (None, 32)                0         \n",
      "_________________________________________________________________\n",
      "dense_3 (Dense)              (None, 10)                330       \n",
      "=================================================================\n",
      "Total params: 144,254\n",
      "Trainable params: 144,254\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model = keras.models.Sequential([\n",
    "     \n",
    "    keras.layers.Conv2D(filters=4, kernel_size = 3, padding='same',\n",
    "                       activation = 'selu', input_shape = [height, width, channels]),\n",
    "    keras.layers.Conv2D(filters=4, kernel_size = 3, \n",
    "                        padding='same', activation = 'selu'),\n",
    "    keras.layers.MaxPool2D(pool_size=2),\n",
    "    \n",
    "    keras.layers.Conv2D(filters=8, kernel_size = 3, \n",
    "                        padding='same', activation = 'selu'),\n",
    "    keras.layers.Conv2D(filters=8, kernel_size = 3, \n",
    "                        padding='same', activation = 'selu'),\n",
    "    keras.layers.MaxPool2D(pool_size=2),\n",
    "    \n",
    "    keras.layers.Conv2D(filters=16, kernel_size = 3, padding='same',\n",
    "                       activation = 'selu', input_shape = [height, width, channels]),\n",
    "    keras.layers.Conv2D(filters=16, kernel_size = 3, \n",
    "                        padding='same', activation = 'selu'),\n",
    "    keras.layers.MaxPool2D(pool_size=2),\n",
    "    \n",
    "    keras.layers.Flatten(),\n",
    "    keras.layers.Dense(32, activation = 'selu'),\n",
    "    keras.layers.AlphaDropout(rate=0.5),\n",
    "    \n",
    "    keras.layers.Dense(num_classes, activation = 'softmax')\n",
    "])\n",
    "\n",
    "model.compile(loss=\"categorical_crossentropy\",\n",
    "             optimizer = \"adam\", metrics = ['accuracy'])\n",
    "\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "logdir = './coin_recognition'\n",
    "if not os.path.exists(logdir):\n",
    "    os.mkdir(logdir)\n",
    "\n",
    "output_model_file = os.path.join(logdir, \"coin_recognition_model.h5\")\n",
    "\n",
    "callbacks = [\n",
    "    keras.callbacks.ModelCheckpoint(output_model_file, save_best_only=True),\n",
    "    keras.callbacks.EarlyStopping(patience=5, min_delta=1e-3)\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 1.5665 - accuracy: 0.4560 - val_loss: 0.0814 - val_accuracy: 1.0000\n",
      "Epoch 2/100\n",
      "133/133 [==============================] - 10s 72ms/step - loss: 0.7132 - accuracy: 0.7351 - val_loss: 0.0213 - val_accuracy: 1.0000\n",
      "Epoch 3/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.4556 - accuracy: 0.8345 - val_loss: 0.1138 - val_accuracy: 0.9000\n",
      "Epoch 4/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.4182 - accuracy: 0.8382 - val_loss: 0.0336 - val_accuracy: 1.0000\n",
      "Epoch 5/100\n",
      "133/133 [==============================] - 9s 69ms/step - loss: 0.5159 - accuracy: 0.8239 - val_loss: 0.0026 - val_accuracy: 1.0000\n",
      "Epoch 6/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.7094 - accuracy: 0.7502 - val_loss: 0.0167 - val_accuracy: 1.0000\n",
      "Epoch 7/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.2460 - accuracy: 0.9142 - val_loss: 3.5305e-04 - val_accuracy: 1.0000\n",
      "Epoch 8/100\n",
      "133/133 [==============================] - 9s 69ms/step - loss: 0.1874 - accuracy: 0.9383 - val_loss: 3.4411e-04 - val_accuracy: 1.0000\n",
      "Epoch 9/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2689 - accuracy: 0.8977 - val_loss: 6.7264e-04 - val_accuracy: 1.0000\n",
      "Epoch 10/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2242 - accuracy: 0.9255 - val_loss: 0.0110 - val_accuracy: 1.0000\n",
      "Epoch 11/100\n",
      "133/133 [==============================] - 9s 66ms/step - loss: 0.3399 - accuracy: 0.8917 - val_loss: 0.0207 - val_accuracy: 1.0000\n",
      "Epoch 12/100\n",
      "133/133 [==============================] - 9s 66ms/step - loss: 1.1165 - accuracy: 0.6265 - val_loss: 0.1491 - val_accuracy: 1.0000\n",
      "Epoch 13/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.4199 - accuracy: 0.8450 - val_loss: 0.0060 - val_accuracy: 1.0000\n",
      "Epoch 14/100\n",
      "133/133 [==============================] - 9s 66ms/step - loss: 0.2696 - accuracy: 0.9038 - val_loss: 5.3436e-04 - val_accuracy: 1.0000\n",
      "Epoch 15/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1971 - accuracy: 0.9352 - val_loss: 8.7341e-05 - val_accuracy: 1.0000\n",
      "Epoch 16/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1373 - accuracy: 0.9594 - val_loss: 3.3104e-05 - val_accuracy: 1.0000\n",
      "Epoch 17/100\n",
      "133/133 [==============================] - 9s 66ms/step - loss: 0.1694 - accuracy: 0.9428 - val_loss: 4.0724e-05 - val_accuracy: 1.0000\n",
      "Epoch 18/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.5099 - accuracy: 0.8632 - val_loss: 0.0027 - val_accuracy: 1.0000\n",
      "Epoch 19/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.5633 - accuracy: 0.8449 - val_loss: 0.0303 - val_accuracy: 1.0000\n",
      "Epoch 20/100\n",
      "133/133 [==============================] - 9s 66ms/step - loss: 0.3076 - accuracy: 0.8796 - val_loss: 1.0385e-04 - val_accuracy: 1.0000\n",
      "Epoch 21/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2650 - accuracy: 0.9150 - val_loss: 1.3291e-04 - val_accuracy: 1.0000\n",
      "Epoch 22/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1579 - accuracy: 0.9474 - val_loss: 8.7377e-05 - val_accuracy: 1.0000\n",
      "Epoch 23/100\n",
      "133/133 [==============================] - 9s 66ms/step - loss: 0.3069 - accuracy: 0.8909 - val_loss: 0.0165 - val_accuracy: 1.0000\n",
      "Epoch 24/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1877 - accuracy: 0.9322 - val_loss: 4.8042e-06 - val_accuracy: 1.0000\n",
      "Epoch 25/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1392 - accuracy: 0.9511 - val_loss: 3.2664e-06 - val_accuracy: 1.0000\n",
      "Epoch 26/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1768 - accuracy: 0.9481 - val_loss: 4.0234e-06 - val_accuracy: 1.0000\n",
      "Epoch 27/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1078 - accuracy: 0.9616 - val_loss: 3.1727e-05 - val_accuracy: 1.0000\n",
      "Epoch 28/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.7503 - accuracy: 0.7842 - val_loss: 0.1681 - val_accuracy: 0.9000\n",
      "Epoch 29/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.2990 - accuracy: 0.8938 - val_loss: 2.9836e-05 - val_accuracy: 1.0000\n",
      "Epoch 30/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1960 - accuracy: 0.9323 - val_loss: 5.4836e-07 - val_accuracy: 1.0000\n",
      "Epoch 31/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.4868 - accuracy: 0.8662 - val_loss: 0.0061 - val_accuracy: 1.0000\n",
      "Epoch 32/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.4603 - accuracy: 0.8569 - val_loss: 1.5282e-04 - val_accuracy: 1.0000\n",
      "Epoch 33/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.2319 - accuracy: 0.9330 - val_loss: 1.5208e-04 - val_accuracy: 1.0000\n",
      "Epoch 34/100\n",
      "133/133 [==============================] - 9s 69ms/step - loss: 0.1991 - accuracy: 0.9383 - val_loss: 2.7249e-05 - val_accuracy: 1.0000\n",
      "Epoch 35/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1556 - accuracy: 0.9489 - val_loss: 2.8339e-05 - val_accuracy: 1.0000\n",
      "Epoch 36/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.4578 - accuracy: 0.8517 - val_loss: 2.2979e-04 - val_accuracy: 1.0000\n",
      "Epoch 37/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2658 - accuracy: 0.9195 - val_loss: 3.2213e-04 - val_accuracy: 1.0000\n",
      "Epoch 38/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1816 - accuracy: 0.9459 - val_loss: 6.2193e-05 - val_accuracy: 1.0000\n",
      "Epoch 39/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1804 - accuracy: 0.9398 - val_loss: 4.0406e-04 - val_accuracy: 1.0000\n",
      "Epoch 40/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.0989 - accuracy: 0.9699 - val_loss: 2.7392e-05 - val_accuracy: 1.0000\n",
      "Epoch 41/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.0555 - accuracy: 0.9872 - val_loss: 3.7909e-06 - val_accuracy: 1.0000\n",
      "Epoch 42/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2665 - accuracy: 0.9450 - val_loss: 0.0529 - val_accuracy: 1.0000\n",
      "Epoch 43/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 1.1347 - accuracy: 0.6659 - val_loss: 0.0306 - val_accuracy: 1.0000\n",
      "Epoch 44/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.3396 - accuracy: 0.8969 - val_loss: 3.3379e-04 - val_accuracy: 1.0000\n",
      "Epoch 45/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1646 - accuracy: 0.9413 - val_loss: 1.2108e-04 - val_accuracy: 1.0000\n",
      "Epoch 46/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2832 - accuracy: 0.9142 - val_loss: 0.4069 - val_accuracy: 0.9000\n",
      "Epoch 47/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2506 - accuracy: 0.9481 - val_loss: 3.8124e-05 - val_accuracy: 1.0000\n",
      "Epoch 48/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.2085 - accuracy: 0.9435 - val_loss: 4.5966e-05 - val_accuracy: 1.0000\n",
      "Epoch 49/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.8869 - accuracy: 0.7788 - val_loss: 0.3011 - val_accuracy: 0.9000\n",
      "Epoch 50/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.3350 - accuracy: 0.8842 - val_loss: 0.0144 - val_accuracy: 1.0000\n",
      "Epoch 51/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1793 - accuracy: 0.9473 - val_loss: 0.0029 - val_accuracy: 1.0000\n",
      "Epoch 52/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.8284 - accuracy: 0.7615 - val_loss: 0.5285 - val_accuracy: 0.8000\n",
      "Epoch 53/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.8530 - accuracy: 0.7271 - val_loss: 0.2349 - val_accuracy: 0.9000\n",
      "Epoch 54/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.4977 - accuracy: 0.8261 - val_loss: 0.0215 - val_accuracy: 1.0000\n",
      "Epoch 55/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2666 - accuracy: 0.9316 - val_loss: 0.0028 - val_accuracy: 1.0000\n",
      "Epoch 56/100\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "133/133 [==============================] - 9s 67ms/step - loss: 0.2336 - accuracy: 0.9202 - val_loss: 1.1109e-04 - val_accuracy: 1.0000\n",
      "Epoch 57/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1514 - accuracy: 0.9495 - val_loss: 1.0491e-05 - val_accuracy: 1.0000\n",
      "Epoch 58/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1112 - accuracy: 0.9601 - val_loss: 5.2096e-06 - val_accuracy: 1.0000\n",
      "Epoch 59/100\n",
      "133/133 [==============================] - 9s 69ms/step - loss: 0.1738 - accuracy: 0.9503 - val_loss: 9.2153e-06 - val_accuracy: 1.0000\n",
      "Epoch 60/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1782 - accuracy: 0.9571 - val_loss: 2.0041e-05 - val_accuracy: 1.0000\n",
      "Epoch 61/100\n",
      "133/133 [==============================] - 9s 66ms/step - loss: 0.1690 - accuracy: 0.9481 - val_loss: 2.6051e-05 - val_accuracy: 1.0000\n",
      "Epoch 62/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1796 - accuracy: 0.9466 - val_loss: 1.3483e-05 - val_accuracy: 1.0000\n",
      "Epoch 63/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.4825 - accuracy: 0.8871 - val_loss: 4.7566e-06 - val_accuracy: 1.0000\n",
      "Epoch 64/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1815 - accuracy: 0.9518 - val_loss: 1.2851e-05 - val_accuracy: 1.0000\n",
      "Epoch 65/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1722 - accuracy: 0.9602 - val_loss: 6.7579e-05 - val_accuracy: 1.0000\n",
      "Epoch 66/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1294 - accuracy: 0.9639 - val_loss: 4.5495e-05 - val_accuracy: 1.0000\n",
      "Epoch 67/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1339 - accuracy: 0.9631 - val_loss: 3.1894e-04 - val_accuracy: 1.0000\n",
      "Epoch 68/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1083 - accuracy: 0.9691 - val_loss: 3.9936e-06 - val_accuracy: 1.0000\n",
      "Epoch 69/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1534 - accuracy: 0.9564 - val_loss: 3.3498e-06 - val_accuracy: 1.0000\n",
      "Epoch 70/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1222 - accuracy: 0.9646 - val_loss: 2.3961e-06 - val_accuracy: 1.0000\n",
      "Epoch 71/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1743 - accuracy: 0.9526 - val_loss: 8.3271e-06 - val_accuracy: 1.0000\n",
      "Epoch 72/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1303 - accuracy: 0.9631 - val_loss: 7.7847e-06 - val_accuracy: 1.0000\n",
      "Epoch 73/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.3252 - accuracy: 0.9271 - val_loss: 5.4928e-04 - val_accuracy: 1.0000\n",
      "Epoch 74/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2826 - accuracy: 0.9345 - val_loss: 3.4881e-05 - val_accuracy: 1.0000\n",
      "Epoch 75/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1638 - accuracy: 0.9549 - val_loss: 2.4928e-04 - val_accuracy: 1.0000\n",
      "Epoch 76/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.7007 - accuracy: 0.8383 - val_loss: 0.2771 - val_accuracy: 0.8000\n",
      "Epoch 77/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.3156 - accuracy: 0.9067 - val_loss: 2.4761e-04 - val_accuracy: 1.0000\n",
      "Epoch 78/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1670 - accuracy: 0.9503 - val_loss: 9.7960e-05 - val_accuracy: 1.0000\n",
      "Epoch 79/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.3165 - accuracy: 0.9315 - val_loss: 2.5234e-05 - val_accuracy: 1.0000\n",
      "Epoch 80/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1109 - accuracy: 0.9669 - val_loss: 1.0467e-05 - val_accuracy: 1.0000\n",
      "Epoch 81/100\n",
      "133/133 [==============================] - 9s 66ms/step - loss: 0.1967 - accuracy: 0.9549 - val_loss: 8.0063e-05 - val_accuracy: 1.0000\n",
      "Epoch 82/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2846 - accuracy: 0.9473 - val_loss: 2.0385e-06 - val_accuracy: 1.0000\n",
      "Epoch 83/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.2097 - accuracy: 0.9496 - val_loss: 3.8579e-04 - val_accuracy: 1.0000\n",
      "Epoch 84/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1805 - accuracy: 0.9541 - val_loss: 8.9530e-06 - val_accuracy: 1.0000\n",
      "Epoch 85/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.5047 - accuracy: 0.9195 - val_loss: 1.6670e-04 - val_accuracy: 1.0000\n",
      "Epoch 86/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2231 - accuracy: 0.9368 - val_loss: 2.5955e-05 - val_accuracy: 1.0000\n",
      "Epoch 87/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1568 - accuracy: 0.9602 - val_loss: 8.2771e-05 - val_accuracy: 1.0000\n",
      "Epoch 88/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1241 - accuracy: 0.9707 - val_loss: 7.8383e-06 - val_accuracy: 1.0000\n",
      "Epoch 89/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.6551 - accuracy: 0.8569 - val_loss: 0.0181 - val_accuracy: 1.0000\n",
      "Epoch 90/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.3146 - accuracy: 0.9068 - val_loss: 4.7003e-05 - val_accuracy: 1.0000\n",
      "Epoch 91/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.2260 - accuracy: 0.9436 - val_loss: 4.0506e-05 - val_accuracy: 1.0000\n",
      "Epoch 92/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1240 - accuracy: 0.9631 - val_loss: 1.2163e-04 - val_accuracy: 1.0000\n",
      "Epoch 93/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.0982 - accuracy: 0.9714 - val_loss: 1.4467e-05 - val_accuracy: 1.0000\n",
      "Epoch 94/100\n",
      "133/133 [==============================] - 9s 68ms/step - loss: 0.1511 - accuracy: 0.9601 - val_loss: 9.4382e-05 - val_accuracy: 1.0000\n",
      "Epoch 95/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1589 - accuracy: 0.9549 - val_loss: 6.9859e-06 - val_accuracy: 1.0000\n",
      "Epoch 96/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.0897 - accuracy: 0.9737 - val_loss: 2.6975e-05 - val_accuracy: 1.0000\n",
      "Epoch 97/100\n",
      "133/133 [==============================] - 9s 66ms/step - loss: 0.1114 - accuracy: 0.9684 - val_loss: 4.0770e-06 - val_accuracy: 1.0000\n",
      "Epoch 98/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1986 - accuracy: 0.9526 - val_loss: 3.7683e-05 - val_accuracy: 1.0000\n",
      "Epoch 99/100\n",
      "133/133 [==============================] - 9s 69ms/step - loss: 0.1167 - accuracy: 0.9722 - val_loss: 3.6479e-06 - val_accuracy: 1.0000\n",
      "Epoch 100/100\n",
      "133/133 [==============================] - 9s 67ms/step - loss: 0.1068 - accuracy: 0.9684 - val_loss: 5.1559e-06 - val_accuracy: 1.0000\n"
     ]
    }
   ],
   "source": [
    "epochs = 100\n",
    "#因为数据是generator 产生的 所以不能用fit函数\n",
    "history = model.fit_generator(train_generator, steps_per_epoch=train_num // batch_size,\n",
    "                             epochs=epochs, validation_data=valid_generator,\n",
    "                             validation_steps=valid_num//batch_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_learning_curves(history, label, epochs, min_value, max_value):\n",
    "    data = {}\n",
    "    data[label] = history.history[label]\n",
    "    data['val_'+label] = history.history['val_' + label]\n",
    "    \n",
    "    pd.DataFrame(data).plot(figsize = (8,5))\n",
    "    plt.grid(True)\n",
    "    plt.axis([0, epochs, min_value, max_value])\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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EZFoELFF259vxKFQWlpKSUkJO3fuJCEhgaysLNLT031D13U55256hXXdZfVvmWrfvr3v8YIFCxg5ciTFxcV88803ZGVl3XK/+fn5PProo8THxzNhwgRfURcRkbZB57TruXDhAomJiSQkJPDll1+ya9curly5wvbt2zl27BiAb3h89OjRvPfee75tbwyP9+zZk/Lycq5fv+77xt7QsXr37g3Ahx9+6Fs+evRoli9f7rtY7cbxkpKSSEpKYtGiRb7z5CIi0naoaNczZswYrl27RlpaGgsWLGDYsGH06NGDwsJCxo0bR3p6OhMnTgTg5Zdf5ty5c9x///2kp6ezbds2AN544w1ycnIYNWoUvXr1avBYL7zwAvPmzWP48OHU1tb6lk+bNo27776btLQ00tPTWbdune+1SZMm0adPHwYNGhSiDIiISKQy51xYDnzfffe5+kPO5eXlDBw4MCzxRItnn32WjIwMnnrqqUbXDWQa0xv0njSutLTUd2pDQkM5Dj3luGWY2V7n3JDmbq+TolFk8ODBtG/fnjfffDPcoYiISBioaEeRvXv3hjsEEREJI53TFhERiRIq2iIiIlFCRVtERCRKqGiLiIhECRVtERGRKKGiHYC63bxERERCTUW7FVBvbhGRtiFy79P+84twan9w93lXKjzyRoMvz507l3vuuYdnnnkGgIKCAsyMsrIyzp07R01NDYsWLSI3N7fRQ1VXV5Obm3vT7dasWcOSJUswM9LS0vjoo484ffo006dP5+jRowAsW7aMpKQkcnJyOHDgAABLliyhurqagoICsrKyyMzMZMeOHYwdO5b+/fuzaNEirl69Srdu3Vi7di0JCQlUV1czc+ZM9uzZg5mxcOFCzp8/z4EDB3j77bcB+OCDDygvL+ett94KKL0iIhJakVu0wyAvL49Zs2b5ivaGDRvYvHkzs2fPplOnTnz//fcMGzaMsWPH3rQLV13x8fEUFxf/bLtDhw7x2muvsWPHDrp37+5rBvLcc88xYsQIiouLqa2tpbq6utH+3OfPn2f79u2Ap1nJrl27MDNWrFjB4sWLKSgouGnP73bt2pGWlsbixYuJi4tj1apVvP/++4GmT0REQixyi/YtvhGHSkZGBmfOnOHEiRNUVlaSmJhIr169mD17NmVlZdx222189913nD59mrvuuuuW+3LOMX/+/J9tt3XrVsaP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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_learning_curves(history, 'accuracy', epochs, 0, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_learning_curves(history, 'loss', epochs, 0, 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "def load_and_preprocess_single_img(path):\n",
    "    # read the img through file path\n",
    "    image = tf.io.read_file(path)  \n",
    "    image = tf.image.decode_jpeg(image, channels=3)\n",
    "    # 原始图片大小为(139, 128, 3)，重设为(139,128)\n",
    "    image = tf.image.resize(image, [139, 128])  \n",
    "    image = tf.cast(image, tf.float32) / 255.0  # 归一化到[0,1]范围\n",
    "    image = np.expand_dims(image, axis = 0) # since you have batch_size, so you need to expand your image\n",
    "    return image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate_single_pic(path, show=False):\n",
    "    \n",
    "    if show:\n",
    "        import matplotlib.image as mpimg\n",
    "        plt.imshow(mpimg.imread(path))\n",
    "    image = load_and_preprocess_single_img(path)\n",
    "    predict_result = model.predict(image)\n",
    "    print(\"This is\", label_names[np.argmax(predict_result, axis=1)[0]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.save_weights('./checkpoints/my_checkpoint')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.save('./coin_recognition_model.h5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "This is eth\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_pic_path2 = \"./test/tt3.png\"\n",
    "evaluate_single_pic(test_pic_path2, True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "TensorFlow-GPU",
   "language": "python",
   "name": "tf2_gpu"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
